class Person:
    def __init__(self, name, gender, age, balance, phone_brand, battery_capacity, screen_size, max_standby_time,
                 points):
        """初始化人类属性"""
        self.name = name  # 姓名
        self.gender = gender  # 性别
        self.age = age  # 年龄
        self.balance = balance  # 手机剩余话费（元）
        self.phone_brand = phone_brand  # 手机品牌
        self.battery_capacity = battery_capacity  # 电池容量（mAh）
        self.screen_size = screen_size  # 屏幕大小（英寸）
        self.max_standby_time = max_standby_time  # 最大待机时长（小时）
        self.points = points  # 拥有的积分
    def send_message(self, content):
        """发短信功能"""
        print(f"{self.name} 发送短信：{content}")
    def make_call(self, phone_number, call_duration):
        """
        打电话功能
        :param phone_number: 要拨打的电话号码
        :param call_duration: 通话时长（分钟）
        :return: 通话结果和扣费信息
        """
        # 检查号码是否为空
        if not phone_number:
            print("错误：电话号码不能为空！")
            return False
        # 检查话费是否不足
        if self.balance < 1:
            print(f"错误：{self.name} 的话费不足1元，当前余额：{self.balance}元")
            return False
        # 计算通话费用和积分
        if 0 < call_duration <= 10:
            cost = call_duration * 1
            earned_points = call_duration * 15
        elif 10 < call_duration <= 20:
            cost = call_duration * 0.8
            earned_points = call_duration * 39
        else:
            cost = call_duration * 0.65
            earned_points = call_duration * 48
        # 检查余额是否足够支付通话费用
        if self.balance < cost:
            print(f"错误：{self.name} 的余额不足，当前余额：{self.balance}元，需要支付：{cost:.2f}元")
            return False
        # 执行通话
        print(f"正在拨打 {phone_number}，通话时长：{call_duration}分钟...")
        print(f"通话结束，扣费：{cost:.2f}元，获得积分：{earned_points}分")
        # 更新话费和积分
        self.balance -= cost
        self.points += earned_points
        return True
    def __str__(self):
        """打印个人信息"""
        return (
            f"个人信息:\n姓名: {self.name}\n性别: {self.gender}\n年龄: {self.age}\n"
            f"手机品牌: {self.phone_brand}\n当前话费: {self.balance}元\n"
            f"电池容量: {self.battery_capacity}mAh\n屏幕大小: {self.screen_size}英寸\n"
            f"最大待机: {self.max_standby_time}小时\n当前积分: {self.points}"
        )
# 测试代码
if __name__ == "__main__":
    # 创建一个人物对象
    person = Person(
        name="张三",
        gender="男",
        age=25,
        balance=50,  # 50元话费
        phone_brand="iPhone 13",
        battery_capacity=3200,
        screen_size=6.1,
        max_standby_time=20,  # 20小时
        points=100  # 已有100积分
    )
    # 打印个人信息
    print(person)
    # 测试打电话功能
    print("\n测试1：正常通话（8分钟）")
    person.make_call("13800138000", 8)  # 应扣费8元，获得120积分
    print("\n测试2：长时间通话（15分钟）")
    person.make_call("13800138000", 15)  # 应扣费12元，获得585积分
    print("\n测试3：超长时间通话（25分钟）")
    person.make_call("13800138000", 25)  # 应扣费16.25元，获得1200积分
    print("\n测试4：空号码")
    person.make_call("", 5)  # 应报错
    print("\n测试5：余额不足")
    person.balance = 0.5  # 设置余额不足
    person.make_call("13800138000", 1)  # 应报错